﻿using SwyishChess.Domain.Board;
using SwyishChess.Domain.Piece;
using SwyishChess.Domain.Player;
using SwyishChess.Domain.Move;
using SwyishChess.Service;

namespace SwyishChess.Domain.ChessGame
{
    public class ChessGameModel
    {
        /// <summary>
        /// Chessboard model which keeps track of the current chess game board
        /// </summary>
        public ChessBoardModel ChessBoard { get; set; }
        /// <summary>
        /// Chess pieces model which keeps track of the current chess pieces in the game
        /// </summary>
        public ChessPiecesModel ChessPieces { get; set; }
        /// <summary>
        /// Chess players model which keeps track of the players
        /// </summary>
        public ChessPlayersModel ChessPlayers { get; set; }
        /// <summary>
        /// Chess moves model which keep track of movements of chess pieces
        /// </summary>
        public ChessMovesModel ChessMoves { get; set; }

        /// <summary>
        /// Default constructor which initializes various chess game components
        /// </summary>
        public ChessGameModel()
        {
            ChessBoard = new ChessBoardModel();
            ChessPieces = new ChessPiecesModel();
            ChessPlayers = new ChessPlayersModel(2);
            ChessMoves = new ChessMovesModel();
        }
    }
}
